More and more frequently, computer programs provide the ability to receive and display presence information regarding another computer user. Presence information generally refers to data describing the availability of a user and their willingness to communicate. For instance, instant messaging (“IM”) client applications typically provide the ability to view the on-line/off-line status of individuals identified in a “buddy list,” and their willingness to communicate, such as “available,” “busy,” or “away.” Personal information manager (“PIM”) programs may similarly show the on-line/off-line status for e-mail senders or other users identified in a contacts list or address book. Additionally, other types of presence information may also be provided. For example, presence information may include phone numbers, meeting information, notes, or other messages related to the availability of the user.
The publisher of presence information can typically assign permissions to different presence publications. The assignment of permissions may be based on factors like the specific identity of the user requesting the publication (the “requestor”), whether or not the requestor is a “buddy” of the publisher of the presence information, what domain the requestor belongs to, and others. A user can also specify that one version of the presence publication be provided if the requestor matches a specific identity, and that another version of the same publication be provided if the requestor is a member of a specific domain. The presence publications and their associated permissions are typically stored in a database by a presence server. The presence server may be integrated into an IM server computer or a server computer configured to operate with a PIM.
When a request is received for a particular presence publication at a presence server, it is necessary to perform multiple database lookups in a procedural fashion to respond to the request. This is generally required because a requestor may match several permissions. In this case, a procedure must be followed to determine which version of the publication should be provided to the user. As an example, permission to a presence publication may be granted to a list of users and permission to another version of the same publication may be granted to users in a specified domain. If the requestor is identified in the list and is also a member of the specified domain, it becomes necessary to evaluate multiple procedural rules over the database in order to determine which version of the presence information should be provided. These operations can become computationally expensive, especially in the context of a presence server that must evaluate many hundreds of requests for presence information each second.
It is with respect to these considerations and others that aspects of a computing system for performing efficient database lookups are described below.